package com.shrct.businessprocess.purchase;

import com.shrct.businessprocess.budget.RCCost4ACTItem;
import com.shrct.businessprocess.product.RCBrand;
import com.shrct.businessprocess.product.RCProductServiceTracer;
import com.shrct.businessprocess.project.RCExchangeRate;
import com.shrct.businessprocess.project.RCProjectMoney;
import com.shrct.businessprocess.purchase.IHasServicePurchase;
import com.shrct.businessprocess.purchase.RCHasPurchaseBudget;
import com.shrct.businessprocess.purchase.RCProductPurchaseRequest;
import com.shrct.businessprocess.purchase.RCServiceProductPurchaseRequest;
import com.shrct.businessprocess.purchase.impl.RCFullServicePurchaseBudgetImpl;
import com.shrct.businessprocess.purchase.proxy.RCFullServicePurchaseBudgetProxy;
import edu.fudan.mylang.pf.EntityImplementation;

@EntityImplementation(implementBy = RCFullServicePurchaseBudgetImpl.class)
public interface RCFullServicePurchaseBudget extends RCHasPurchaseBudget, IHasServicePurchase {
  public abstract RCBrand getProductCategory();
  
  public abstract RCFullServicePurchaseBudget setProductCategory(final RCBrand productCategory);
  
  public abstract RCProjectMoney getContractPrice();
  
  public abstract RCFullServicePurchaseBudget setContractPrice(final RCProjectMoney contractPrice);
  
  public abstract Double getContractTaxRate();
  
  public abstract RCFullServicePurchaseBudget setContractTaxRate(final Double contractTaxRate);
  
  public abstract RCProjectMoney getNetPrice();
  
  public abstract RCFullServicePurchaseBudget setNetPrice(final RCProjectMoney netPrice);
  
  public abstract Double getNetTaxRate();
  
  public abstract RCFullServicePurchaseBudget setNetTaxRate(final Double netTaxRate);
  
  public abstract String getTypeId();
  
  public abstract RCExchangeRate getDefaultPurchaseExchangeRate();
  
  public abstract void purchaseRequestAuditPassed(final RCProductPurchaseRequest purchaseRequest);
  
  public abstract String getSortKey();
  
  public abstract String getName();
  
  public abstract String getEntityName();
  
  public abstract RCServiceProductPurchaseRequest createServiceProductPurchaseRequest();
  
  public abstract Iterable<RCServiceProductPurchaseRequest> getServicePurchaseRequests();
  
  public abstract Iterable<RCProductServiceTracer> getRCProductServiceTracer();
  
  public abstract RCHasPurchaseBudget asBudget();
  
  public abstract Iterable<RCCost4ACTItem> getCost4ACItems();
  
  public abstract RCFullServicePurchaseBudgetProxy toProxy();
}
